package com.alameda.service.history;

import com.alameda.common.annotation.DataScope;
import com.alameda.common.commonpent.mp.BaseService;
import com.alameda.history.dto.ApVideoHistoryDTO;
import com.alameda.history.vo.ApVideoHistoryVO;
import com.alameda.pojo.history.ApVideoHistoryDO;

import java.util.List;

/**
 * 视频播放历史记录 业务逻辑层
 *
 * @author Lv
 * @date 2024/10/09
 */
public interface ApVideoHistoryService extends BaseService<ApVideoHistoryDO> {
    /**
     * 加载视频观看记录
     *
     * @param apVideoHistoryDTO 视频播放历史记录信息
     * @return
     */
    List<ApVideoHistoryVO> loadHistory(ApVideoHistoryDTO apVideoHistoryDTO);

    /**
     * 保存视频播放记录
     *
     * @param apVideoHistoryDTO 视频播放历史记录信息
     * @return
     */
    Boolean saveVideoHistory(ApVideoHistoryDTO apVideoHistoryDTO);

    /**
     * 通过视频文件id查询
     *
     * @param videoId 视频文件id
     * @return
     */
    @DataScope
    default ApVideoHistoryDO findByVideoId(Long videoId) {
        return this.findOne(ApVideoHistoryDO.builder().videoId(videoId).build());
    }

    /**
     * 删除播放记录
     *
     * @param idList 媒体文件id集合
     * @return
     */
    Boolean removeByMediaIdList(List<Long> idList);

    /**
     * 修改播放记录信息
     *
     * @param apVideoHistoryDTO 视频播放历史记录信息
     * @return
     */
    Boolean updateMediaHistory(ApVideoHistoryDTO apVideoHistoryDTO);

    /**
     * 读取播放历史记录信息
     *
     * @param apVideoHistoryDTO 视频播放历史记录信息
     * @return
     */
    List<ApVideoHistoryVO> loadApVideoHistory(ApVideoHistoryDTO apVideoHistoryDTO);

    /**
     * 批量修改播放历史记录信息
     *
     * @param apVideoHistoryDTOList 视频播放历史记录信息
     * @return
     */
    Boolean updateMediaHistoryBatch(List<ApVideoHistoryDTO> apVideoHistoryDTOList);
}
